package thinker.miracle.datasource;

/**
 * @author bo.chen
 *
 */
public class DynamicDataSourceHolder {
	
	private static enum DataSourceType {  
        master, slave;  
    }  
  
    public static final ThreadLocal<DataSourceType> holder = new ThreadLocal<>();  
  
    /** 
     * 数据源名称 
     */  
    public static final String DATASOURCE_MASTER = "master";  
    
    public static final String DATASOURCE_SLAVE = "slave";  
  
      
    /**
     * 标记为主库数据源 
     */
    public static void markMaster() {  
        holder.set(DataSourceType.master);  
    }  
      
    /**
     * 标记为从库数据源 
     */
    public static void markSlave() {  
        holder.set(DataSourceType.slave);  
    }  
      
    /**
     * 重置 
     */
    public static void reset() {  
        holder.set(null);  
    }  
      
    /**
     * 是否还未设置数据源
     * 
     * @return
     * 	true : 未设置
     * 	false : 已经设置
     */
    public static boolean isChoiceNone() {  
        return null == holder.get();   
    }  
      
    /**
     * 当前是否选择了主库数据源 
     * 
     * @return
     */
    public static boolean isChoiceMaster() {  
        return DataSourceType.master == holder.get();  
    }  
      
    /**
     * 当前是否选择了从库数据源
     * 
     * @return
     */
    public static boolean isChoiceSlave() {  
        return DataSourceType.slave == holder.get();  
    }  
}
